<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
</head>
<body>
    <script >
       /*
       Rest 参数与spread 扩展运算符 在es6 中已经引入
       不过es6 中只针对数据。
       在es9中为对象提供了像数组一样的rest参数和扩展运算符
       */

       function connect({host,port,username,password}){
           console.log(host);
           console.log(port);
           console.log(username);
           console.log(password);
       }

       // 你也可以这样写 这里的user 就是 rest 参数
       function connect1({host,port, ...user}){
           console.log(host);
           console.log(port);
           // 其余多余的参数，会存在user中去
           console.log(user);
        
       }

       // 如果一个对象是这样
       const one ={
           a:'a',b:'b'
       }

       const two ={
           c:'c',d:'d'
       }
       const fin = {...one,...two}
       console.log(fin);// {a: 'a', b: 'b', c: 'c', d: 'd'}


       // 正则，命名捕获分组
       let str = '<a href="http://www.baodu.com">123</a>';
       
       // 提取url 和文本
       const reg = /<a href="(.*)">(.*)<\/a>/;
        const r = reg.exec(str);
        // 其实类似java中的分组，这会返回一个数组，第一个总是全部的文字
        // 第二个开始是匹配的结果
        console.log(r[1],r[2]);

        // es9的调整，你可以给匹配到的东西，声明名字
        const reg1 = /<a href="(?<url>.*)">(?<text>.*)<\/a>/;
            //这样
            const r1 = reg1.exec(str);
            // 这样，在r1的groups属性下就有值，你还可以通过别名去访问到
            // 就不会因为以后变动，增加或减少匹配项，而导致索引变动

            console.log(r1.groups.text);
            console.log(r1.groups.url);

            // 正则扩展，反向断言

            // 正向断言 
            // 我想取555，那么我们观察，55的后面是拉，那么
            // 一旦匹配到数字，看看后面是否是拉就取出他
            let s1 = 'js1843541543你是555拉拉';
            const reg3 = /\d+(?=拉)/;
            const result = reg3.exec(s1);
            console.log(result[0]);// 他这里0是直接返回了结果

            // 反向断言,如果你直接d+取是取不到555的，因为前面数字已经匹配完了。
            const reg4 = /(?<=是)\d+/;
            const result1 = reg4.exec(s1);
            console.log(result[0]);

            // 正则的doAll模式
    </script>
</body>

</html>